package edu.bbu.cshu.wmpc.checking;

import java.util.ArrayList;

import edu.bbu.cshu.wmpc.core.LevelTypes;
import edu.bbu.cshu.wmpc.core.SourceCodeWmpc;
/**
 * <ul>
 * <li><b><i>Checking</i></b></li>
 * <li style="list-style: none;"></li>
 * <li style="list-style: none;">
 * Interface that is to be implemented by classes that perform code checking.
 * 
 * @author WMPC team
 * </li>
 * </ul>
 */
public interface Checking {
	/**
	 * <ul style="margin-top: 24px;">
	 * <li><b><i>executeTest</i></b></li>
	 * <li style="list-style: none;"></li>
	 * <li style="list-style: none;">
	 * <p style="margin-left: 7px;">{@code public} {@link ArrayList}<{@link Object}> {@code executeTest(}{@link LevelTypes} {@code level,} {@link SourceCodeWmpc} {@code sc1,} {@link SourceCodeWmpc} {@code sc2)}</p>
	 * <br>	
	 * Executes a single test between {@code sc1} and {@code sc2}, taking into account the roughness specified by the {@code level}. Less then two character long lines are excluded.
	 *  
	 * @param level - specifies the level of the test to be performed
	 * @param sc1   - first source code {@code Object}
	 * @param sc2   - second source code {@code Object}
	 * @return      an {@code ArrayList<Object>} containing the test results
	 * </li>
	 * </ul>
	 */
	public ArrayList<Object> executeTest(LevelTypes level, SourceCodeWmpc sc1, SourceCodeWmpc sc2);

}
